function [Transitivity_Matrix] = IA_Relation_Transitivity()
%IA_Relation_Transitivity Summary of this function goes here
%   Detailed explanation goes here

%persistent member_name;
persistent IA_Transitivity_Matrix;

if isempty(IA_Transitivity_Matrix)
  member_name = 'set';

  IA_Transitivity_Matrix = ...
    [ % First Row < d o m s f =
      [ % Group is for (<) less than
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [1 1 1 1 1 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [1 1 1 1 1 0 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [1 1 1 1 1 1 1; 1 1 1 1 1 1 1]) ... % >  greater than
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % di contains
        struct(member_name, [1 1 1 1 1 0 0; 0 0 0 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [1 1 1 1 1 0 0; 0 0 0 0 0 0 0]) ... % mi met by
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % si started by
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (d) during
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [1 1 1 1 1 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [1 1 1 1 1 1 1; 1 1 1 1 1 1 1]) ... % di contains
        struct(member_name, [0 1 0 0 0 1 0; 1 0 1 1 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % mi met by
        struct(member_name, [0 1 0 0 0 1 0; 1 0 1 1 0 0 0]) ... % si started by
        struct(member_name, [1 1 1 1 1 0 0; 0 0 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (o) overlaps
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 1 0 1 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [1 0 1 1 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 1 1 0 1 0 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 1 1 1 1 0 0]) ... % >  greater than
        struct(member_name, [1 0 1 1 0 0 0; 0 1 0 0 0 1 0]) ... % di contains
        struct(member_name, [0 1 1 0 0 0 1; 0 1 1 0 0 0 1]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % mi met by
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % si started by
        struct(member_name, [1 0 1 1 0 0 0; 0 0 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (m) meets
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 1 0 1 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 1 1 0 1 0 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 1 1 1 1 0 0]) ... % >  greater than
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % di contains
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 1 1; 0 0 0 0 0 1 1]) ... % mi met by
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % si started by
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (s) starts
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [1 0 1 1 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 0 0 0 1 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 1 0 0; 0 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [1 0 1 1 0 0 0; 0 1 0 0 0 1 0]) ... % di contains
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 1 0 1; 0 0 0 0 1 0 1]) ... % si started by
        struct(member_name, [1 0 1 1 0 0 0; 0 0 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 1 0 0; 0 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (f) finishes
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [0 1 1 0 1 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 1 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 1 0; 0 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 1 1 1 1 1 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 1 0 1 1 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 1 1 0 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 1 1; 0 0 0 0 0 1 1]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 1 0; 0 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (=) equals
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 0 0 0 1 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 1 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 1; 0 0 0 0 0 0 1]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 1 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 0 1 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 1; 0 0 0 0 0 0 1]) ... % = equals
      ];...
      % Second Row > di oi mi si fi =
      [ % Group is for (>) greater than
        struct(member_name, [1 1 1 1 1 1 1; 1 1 1 1 1 1 1]) ... % <  less than
        struct(member_name, [0 1 0 0 0 1 0; 1 0 1 1 0 0 0]) ... % d  during
        struct(member_name, [0 1 0 0 0 1 0; 1 0 1 1 0 0 0]) ... % o  overlaps
        struct(member_name, [0 1 0 0 0 1 0; 1 0 1 1 0 0 0]) ... % m  meets
        struct(member_name, [0 1 0 0 0 1 0; 1 0 1 1 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (di) contains
        struct(member_name, [1 0 1 1 0 0 0; 0 1 0 0 0 1 0]) ... % <  less than
        struct(member_name, [0 1 1 0 0 0 1; 0 1 1 0 0 0 1]) ... % d  during
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % o  overlaps
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % m  meets
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 1 1 1 1 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (oi) overlapped by
        struct(member_name, [1 0 1 1 0 0 0; 0 1 0 0 0 1 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % d  during
        struct(member_name, [0 1 1 0 0 0 1; 0 1 1 0 0 0 1]) ... % o  overlaps
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % m  meets
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 1 1 1 1 1 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 1 0 1 1 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 1 1 0 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]) ... % = equals
      ]...
      [ % Group is for (mi) met by
        struct(member_name, [1 0 1 1 0 0 0; 0 1 0 0 0 1 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % d  during
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % o  overlaps
        struct(member_name, [0 0 0 0 1 0 1; 0 0 0 0 1 0 1]) ... % m  meets
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % = equals
      ]...
      [ % Group is for (si) started by
        struct(member_name, [1 0 1 1 0 0 0; 0 1 0 0 0 1 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 1 0; 0 0 1 0 0 0 0]) ... % d  during
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % o  overlaps
        struct(member_name, [0 0 1 0 0 0 0; 0 1 0 0 0 1 0]) ... % m  meets
        struct(member_name, [0 0 0 0 1 0 1; 0 0 0 0 1 0 1]) ... % s  starts
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 1 0 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 1 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 1 0 0]) ... % = equals
      ]...
      [ % Group is for (fi) finished by
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 1 0 1 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 1 1; 0 0 0 0 0 1 1]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 0 1 0]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 1 1 1 1 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 1 0 1 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 0 1 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 0 1 0]) ... % = equals
      ]...
      [ % Group is for (=) equals
        struct(member_name, [1 0 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % <  less than
        struct(member_name, [0 1 0 0 0 0 0; 0 0 0 0 0 0 0]) ... % d  during
        struct(member_name, [0 0 1 0 0 0 0; 0 0 0 0 0 0 0]) ... % o  overlaps
        struct(member_name, [0 0 0 1 0 0 0; 0 0 0 0 0 0 0]) ... % m  meets
        struct(member_name, [0 0 0 0 1 0 0; 0 0 0 0 0 0 0]) ... % s  starts
        struct(member_name, [0 0 0 0 0 1 0; 0 0 0 0 0 0 0]) ... % f  finishes
        struct(member_name, [0 0 0 0 0 0 1; 0 0 0 0 0 0 1]);... % =  equals
        struct(member_name, [0 0 0 0 0 0 0; 1 0 0 0 0 0 0]) ... % >  greater than
        struct(member_name, [0 0 0 0 0 0 0; 0 1 0 0 0 0 0]) ... % di contains
        struct(member_name, [0 0 0 0 0 0 0; 0 0 1 0 0 0 0]) ... % oi overlapped by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 1 0 0 0]) ... % mi met by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 1 0 0]) ... % si started by
        struct(member_name, [0 0 0 0 0 0 0; 0 0 0 0 0 1 0]) ... % fi finished by
        struct(member_name, [0 0 0 0 0 0 1; 0 0 0 0 0 0 1]) ... % = equals
      ]...
    ];
end
Transitivity_Matrix = IA_Transitivity_Matrix;
end